ExtJS একটি MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে, যেখানে Controllers, Views, এবং Models একে অপরের সাথে কাজ করে অ্যাপ্লিকেশনের কার্যকারিতা এবং ইউজার ইন্টারফেস তৈরি করতে। এই প্রতিটি উপাদান (Controllers, Views, এবং Models) অ্যাপ্লিকেশনের পৃথক অংশ হিসেবে কাজ করে এবং অ্যাপ্লিকেশনকে মডুলার, স্কেলেবল এবং সহজে রক্ষণাবেক্ষণযোগ্য করে তোলে।
Model অ্যাপ্লিকেশনের ডেটার কাঠামো এবং সেই ডেটার সাথে সম্পর্কিত লজিক সংরক্ষণ করে। এটি ডেটার ভ্যালিডেশন, ডেটা ফিল্ড, এবং ডেটা রিড বা রাইটের জন্য ব্যবহৃত হয়। মডেল সাধারণত সার্ভার থেকে ডেটা লোড, আপডেট এবং সংরক্ষণ করার জন্য স্টোর এবং প্রক্সির সাথে কাজ করে।
মডেল উদাহরণ:
Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'email', type: 'string' }
],
validations: [
{ type: 'length', field: 'name', min: 3 }
]
});
এখানে, User
মডেলটি একটি id
, name
, এবং email
ফিল্ড ধারণ করছে, এবং name
ফিল্ডের জন্য একটি ভ্যালিডেশন দেওয়া হয়েছে যা ৩টির কম দৈর্ঘ্যের নাম গ্রহণ করবে না।
View অ্যাপ্লিকেশনের ইউজার ইন্টারফেস (UI) উপস্থাপন করে। এটি গ্রিড, ফর্ম, প্যানেল, ট্যাব ইত্যাদি UI কম্পোনেন্ট তৈরি করে, যা ব্যবহারকারীদের সঙ্গে ইন্টারঅ্যাকশন করার জন্য ব্যবহৃত হয়। ভিউয়ের প্রধান কাজ হলো ডেটাকে ভিজ্যুয়ালাইজ করা এবং তা ইউজারকে প্রদর্শন করা।
ভিউ উদাহরণ:
Ext.define('MyApp.view.UserGrid', {
extend: 'Ext.grid.Panel',
xtype: 'usergrid',
title: 'User List',
store: {
model: 'MyApp.model.User',
autoLoad: true
},
columns: [
{ text: 'ID', dataIndex: 'id', flex: 1 },
{ text: 'Name', dataIndex: 'name', flex: 2 },
{ text: 'Email', dataIndex: 'email', flex: 3 }
]
});
এখানে, UserGrid
একটি গ্রিড প্যানেল, যা User
মডেল ব্যবহার করে ডেটা প্রদর্শন করে। এখানে store কনফিগারেশন মডেলের সাথে যুক্ত এবং columns কম্পোনেন্টে ডেটা প্রদর্শিত হচ্ছে।
Controller ভিউ এবং মডেলের মধ্যে সমন্বয় ঘটানোর জন্য ব্যবহৃত হয়। এটি ইউজার ইন্টারঅ্যাকশনের ভিত্তিতে অ্যাপ্লিকেশনের লজিক পরিচালনা করে। কন্ট্রোলার ইউজারের ইভেন্ট (যেমন, ক্লিক, সাবমিট, হোভার) অনুযায়ী ভিউ এবং মডেলের মধ্যে যোগাযোগ স্থাপন করে।
কন্ট্রোলার উদাহরণ:
Ext.define('MyApp.controller.UserController', {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'usergrid': {
itemclick: this.onUserClick
}
});
},
onUserClick: function(grid, record) {
Ext.Msg.alert('User Selected', 'Name: ' + record.get('name'));
}
});
এখানে, UserController
কন্ট্রোলারটি usergrid
ভিউতে itemclick
ইভেন্ট হ্যান্ডল করছে। ইউজার যখন গ্রিডের একটি রেকর্ড ক্লিক করবে, তখন একটি আলার্ম বার্তা প্রদর্শিত হবে যার মধ্যে ক্লিক করা ইউজারের নাম থাকবে।
এই তিনটি উপাদান একসাথে কাজ করে ExtJS অ্যাপ্লিকেশন তৈরি করতে যা সহজেই মডুলার এবং রক্ষণাবেক্ষণযোগ্য। MVC আর্কিটেকচার ব্যবহার করে অ্যাপ্লিকেশন ডেভেলপমেন্টের সময় কোড পরিষ্কার থাকে এবং ফিচার অ্যাড বা পরিবর্তন সহজ হয়।